import { IsEmail, IsEnum, IsNotEmpty, IsString, MinLength, MaxLength, Length, IsNumberString } from 'class-validator';

/**
 * ? 获取用户信息
 */
export class GetUserInfoDto {
  @IsNumberString({}, { message: '请输入正确的用户ID格式' })
  @IsNotEmpty({ message: '用户ID不能为空' })
  user_id: number;
}

/**
 * ? 更新用户 dto
 */
export class UpdateUserDto {
  @IsNumberString({}, { message: '请输入正确的用户ID格式' })
  @IsNotEmpty({ message: '用户ID不能为空' })
  user_id: number;

  @IsString()
  @IsNotEmpty({ message: '用户名不能为空' })
  @MaxLength(12, { message: '用户名长度不能大于12位' })
  username: string;

  @IsEnum(['0', '1', '2'], { message: '请输入正确的性别格式' })
  gender: string;

  @IsString()
  @IsNotEmpty({ message: '手机号不能为空' })
  @Length(11, 11, { message: '手机号长度必须为11位' })
  mobile: string;

  @IsString()
  @IsNotEmpty({ message: '头像不能为空' })
  avatar: string;
}

/**
 * ? 切换邮箱 dto
 */
export class SwitchEmailDto {
  @IsEmail({}, { message: '请输入正确的邮箱格式' })
  @IsNotEmpty({ message: '邮箱不能为空' })
  email: string;

  @IsNumberString({}, { message: '请输入正确的验证码格式' })
  @IsNotEmpty({ message: '验证码不能为空' })
  @Length(4, 4, { message: '验证码长度必须为4位' })
  code: string;
}

/**
 * ? 修改密码 dto
 */
export class UpdatePasswordDto {
  @IsNumberString({}, { message: '请输入正确的用户ID格式' })
  @IsNotEmpty({ message: '用户ID不能为空' })
  user_id: number;

  @IsString()
  @IsNotEmpty({ message: '旧密码不能为空' })
  oldPassword: string;

  @IsString()
  @IsNotEmpty({ message: '新密码不能为空' })
  @MinLength(6, { message: '新密码长度不能小于6位' })
  @MaxLength(18, { message: '新密码长度不能大于18位' })
  newPassword: string;
}